# 1. 定义变量（方便后续修改，核心配置区）
TARGET = compile_lexer  # 生成的可执行程序名（Windows 下为 compile_lexer.exe）
SRC = test1.c++         # 你的源码文件名（需与实际一致，如源码名是 lexer.cpp 则修改此处）
CXX = g++               # 编译器（MinGW/GCC 用 g++，Visual Studio 用 cl，此处默认 MinGW）
CXXFLAGS = -std=c++11 -Wall  # 编译选项：-std=c++11 启用 C++11 标准，-Wall 显示警告信息
RM = del /Q              # Windows 删除命令（若用 Linux/macOS，替换为 RM = rm -f）


# 2. 默认目标（输入 make 命令时优先执行）
all: $(TARGET)


# 3. 编译规则：生成可执行程序
$(TARGET): $(SRC)
	$(CXX) $(CXXFLAGS) -o $(TARGET) $(SRC)
	@echo "编译完成！可执行程序：$(TARGET).exe"  # @ 表示不显示命令本身，只显示提示


# 4. 运行目标（输入 make run 直接运行程序）
run: $(TARGET)
	@echo "开始运行程序..."
	$(TARGET).exe  # Windows 需加 .exe，Linux/macOS 直接写 $(TARGET)
	@echo "程序运行结束"


# 5. 清理目标（输入 make clean 删除可执行程序和临时文件）
clean:
	$(RM) $(TARGET).exe  # 删除生成的可执行程序
	@echo "清理完成！已删除 $(TARGET).exe"


# 6. 伪目标声明（避免目录中有同名文件时冲突）
.PHONY: all run clean